home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 7: Sunsite / Linux Cubed Series 7 - Sunsite Vol 1.iso / system / linux-bo / etherboo.000 / etherboo / etherboot-2.0 / netboot-freebsd / objdump86.c < prev    next >
C/C++ Source or Header  |  1996-06-22  |  794b  |  51 lines

  1. #include    <stdio.h>
  2. #include    "a.out.h"
  3.  
  4. void objdump(filename)
  5.     char    *filename;
  6. {
  7.     FILE    *f;
  8.     struct exec    ex;
  9.     long    i;
  10.  
  11.     if ((f = fopen(filename, "r")) == NULL)
  12.     {
  13.         perror(filename);
  14.         return;
  15.     }
  16.     if (fread(&ex, sizeof(ex), 1, f) != 1)
  17.     {
  18.         fprintf(stderr, "%s: Cannot read header\n", filename);
  19.         fclose(f);
  20.         return;
  21.     }
  22.     if (BADMAG(ex))
  23.     {
  24.         fprintf(stderr, "%s: Not an a.out file\n", filename);
  25.         fclose(f);
  26.         return;
  27.     }
  28.     if (fseek(f, (long)A_HEADERSIZ, SEEK_SET) < 0)
  29.     {
  30.         fprintf(stderr, "Fseek failed on %s\n", filename);
  31.         fclose(f);
  32.         exit(1);
  33.     }
  34.     for (i = ex.a_text + ex.a_data; i > 0; --i)
  35.         putchar(fgetc(f));
  36.     fclose(f);
  37. }
  38.  
  39. int main(argc, argv)
  40.     int    argc;
  41.     char    **argv;
  42. {
  43.     if (argc < 2)
  44.     {
  45.         fprintf(stderr, "Usage: %s file\n", argv[0]);
  46.         exit(1);
  47.     }
  48.     objdump(argv[1]);
  49.     exit(0);
  50. }
  51.